<template>
  <div class="rankContainer">
    <p class="title">热门景区排行</p>
    <img src="../../images/dataScreen-title.png" alt="">

    <!-- 图形图表的容器 -->
    <div class="charts" ref="rank">

    </div>
  </div>
</template>
<script setup lang='ts'>
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
// 获取DOM元素
let rank = ref()

// 组件挂载完毕后
onMounted(() => {
  // 一个容器可以展示多种类型的图形图表
  let mychart = echarts.init(rank.value)
  // 设置配置项目
  mychart.setOption({
    // 标题组件
    title: {
      // 主标题
      text: '景区排行',
      // 标题位置
      left: '50%',
      // 主标题文字样式
      textStyle: {
        color: 'yellowgreen',
      },
      link: 'http://www.baidu.com',
      target: 'blank',
      // 子标题
      subtext: '各大景区排行',
      // 子标题样式
      subtextStyle: {
        color: 'yellowgreen',
        fontSize: 13,
        verticalAlign: 'middle',
      }
    },
    xAxis: {
      type: 'category', // 图形图表在x轴均匀分布展示
    },
    yAxis: {},
    grid: {
      left: 20,
      right: 20,
      bottom: 20,
    },
    // 提示框组件
    tooltip: {
      show: true,
      confine: true,
      backgroundColor: 'rgba(50,50,50,0.7)',
      textStyle: {
        color: 'white',
        fontSize: 18,
      }
    },
    // 系列：决定显示图形图表是哪一种的
    series: [
      {
        type: 'bar',
        data: [18, 50, 30, 80, 45, 108, 22],
        // 柱状图上的文本标签
        label: {
          show: true,
          // 文字的位置
          position: 'insideTop'
        },
        // 是否显示背景颜色
        showBackground: true,
        // 每一个柱条的背景样式
        backgroundStyle: {
          // 底部背景的颜色
          color:
          // 线性渐变，前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1，相当于在图形包围盒中的百分比，如果 globalCoord 为 `true`，则该四个值是绝对的像素位置
          {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [{
              offset: 0, color: 'black' // 0% 处的颜色
            }, {
              offset: 1, color: 'blue' // 100% 处的颜色
            }],
            global: false // 缺省为 false
          },
        },
        // 柱条图形样式
        itemStyle: {
          // 柱状条的圆角半径
          borderRadius: [10, 10, 0, 0], //（顺时针左上，右上，右下，左下）
          // 柱条颜色(支持函数)
          color: function (item: any) {
            // item为每个柱条对象
            // 给每一个柱条设置背景颜色
            let arr = ['red', 'orange', 'yellowgreen', 'green', 'purple', 'hotpink', 'skyblue']
            return arr[item.dataIndex]
          }
        }
      },
      {
        type: 'line',
        data: [10, 20, 30, 90, 60, 80, 50],
        // 是否为平滑的曲线
        smooth: true,
      },
      {
        type: 'bar',
        data: [38, 23, 60, 110, 25, 58, 27],
        // 柱状图上的文本标签
        label: {
          show: true,
          // 文字的位置
          position: 'insideTop'
        },
        // 是否显示背景颜色
        showBackground: true,
        // 每一个柱条的背景样式
        backgroundStyle: {
          // 底部背景的颜色
          color:
          // 线性渐变，前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1，相当于在图形包围盒中的百分比，如果 globalCoord 为 `true`，则该四个值是绝对的像素位置
          {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 0,
            y2: 1,
            colorStops: [{
              offset: 0, color: 'black' // 0% 处的颜色
            }, {
              offset: 1, color: 'blue' // 100% 处的颜色
            }],
            global: false // 缺省为 false
          },
        },
        // 柱条图形样式
        itemStyle: {
          // 柱状条的圆角半径
          borderRadius: [10, 10, 0, 0], //（顺时针左上，右上，右下，左下）
          // 柱条颜色(支持函数)
          color: function (item: any) {
            // item为每个柱条对象
            // 给每一个柱条设置背景颜色
            let arr = ['red', 'orange', 'yellowgreen', 'green', 'purple', 'hotpink', 'skyblue']
            return arr[item.dataIndex]
          }
        }
      },
    ]
  })
})


</script>
<style scoped lang="scss">
.rankContainer {
  width: 100%;
  height: 100%;
  background: url(../../images/dataScreen-main-cb.png) no-repeat;
  background-size: 100% 100%;
  margin: 20px 0px;

  .title {
    margin-left: 5px;
    color: white;
    font-size: 20px;
  }

  .charts {
    height: calc(100% - 30px);
  }
}
</style>